import random
#面向对象的编程的步骤：
#根据业务需求，抽象出你要定义的类，需求中有哪些事务存在。
#根据业务需求，要知道每个类的职责，再根据职责定义类的属性和方法

class DiceGame(object):
    #初始化游戏，一场游戏中的两个玩家
    def __init__(self,player1,player2):
        self.player1=player1
        self.player2=player2
        print("游戏初始化成功,可以开始游戏")
    def gameStart(self):
        self.player1.castDice()
        self.player2.castDice()
        print(self.player1)
        print(self.player2)
        
class Player(object):
    #初始化玩家信息及拥有的骰子
    def __init__(self,name,sex,*args):
        self.name=name
        self.sex=sex
        self.args=args
    #定义玩家投骰子的方法，使玩家的每个骰子滚动
    def castDice(self):
       for dice in self.args:
            dice.move()
        
    def __str__(self):
        dicecounts=[self.args[0].count,self.args[1].count,self.args[2].count]
        return "玩家%s，姓别：%s，投掷三个骰子的点数为%s。"%(self.name,self.sex,str(dicecounts))
        
class Dice(object):
    def __init__(self):
        self.count=0
    #骰子滚动的方法，滚动后确定该骰子的点数    
    def move(self):
        self.count=random.randint(1,7)

#游戏开始前，准备六个骰子
dice1=Dice()
dice2=Dice()
dice3=Dice()
dice4=Dice()
dice5=Dice()
dice6=Dice()        
#每次游戏需要两个玩家对象
player1=Player("张三","男",dice1,dice2,dice3)
player2=Player("李娇","女",dice4,dice5,dice6)

game=DiceGame(player1,player2)
game.gameStart()